package com.huawei.hiveFunctions;

import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;

/**
 * 创建大小写转换自定义函数
 * 创建大小写转换自定义函数，自定义UDF，要求继承UDF，并重载实现evaluate方法，一个输入对应一个输出
 */

public class UDFLowerOrUpperCase extends UDF {
    //转换为小写
    public Text evaluate(Text t){
        //默认是进行小写转换
        return this.evaluate(t,"lower");
    }

    /*
     对参数进行大小写转换
     如果该值为lower，则进行小写转换，如果改值为upper则进行大写转换，其他情况不进行转换
     */
    public Text evaluate(Text t,String lowerOrUpper){
        if(t == null){
            return t;
        }

        if("lower".equals(lowerOrUpper)){
            //select lower_upper(studentname,'lower') from students;
            return new Text(t.toString().toLowerCase());
        }else if("upper".equals(lowerOrUpper)){
            //select lower_upper(studentname,'upper') from students;
            return new Text(t.toString().toUpperCase());
        }

        //转换参数错误的情况下，直接返回原本的值
        return t;
    }
}